// package com->alibaba->druid->sql->ast;

// import com->alibaba->druid->sql->ast->statement->SQLSelectItem*;
// import com->alibaba->druid->sql->visitor->SQLASTVisitor;

// import java->util->ArrayList;
// import java->util->std::list;
#pragma once

#include <string>
#include <list>

#include "SQLObjectImpl.h"
#include "SQLHint.h"
#include "Object.h"

#include "statement/SQLSelectItem.h"
class SQLASTVisitor;

class SQLPivot : virtual public SQLObjectImpl
{
public:
  BOOL_ptr xml;
  SQLSelectItem_list_ptr items;
  SQLExpr_list_ptr pivotFor;
  SQLSelectItem_list_ptr pivotIn;

  SHAREDOBJECT(SQLPivot);
  SQLExpr_list_ptr getPivotFor();

  SQLSelectItem_list_ptr getPivotIn();

  SQLPivot();
  void accept0(SQLASTVisitor_ptr v);

  SQLSelectItem_list_ptr getItems();

  void addItem(SQLSelectItem_ptr item);

  BOOL_ptr isXml();

  void setXml(BOOL_ptr xml);

  // SQLPivot* clone() ;
  virtual SQLObject_ptr clone();
};
